package main

import (
	"fmt"
	"strings"
)

type MyCalcFunc = func(x, y int) int

// 回调函数，钩子函数hook
// 计算器，输入 2 个 int 类型数，做不同的 2 个操作数的运算
// 函数是干活，怎么干活的操作外移
func calc(a, b int, fn MyCalcFunc) int {
	return fn(a, b)
}

func add(x, y int) int {
	return x + y
}

func main() {
	calc(4, 5, add) // 多用几次用这个
	calc(4, 5, func(x, y int) int {
		return x - y // 用一次用这个
	})
	fmt.Println(strings.Map(func(r rune) rune {
		return 0x41
	}, "abc"))
}
